package com.malou.server.ventas.tienda;

import java.sql.SQLException;
import java.util.List;

import com.extjs.gxt.ui.client.data.BasePagingLoadResult;
import com.extjs.gxt.ui.client.data.PagingLoadResult;
import com.ibatis.sqlmap.client.SqlMapClient;
import com.malou.client.ventas.tienda.Tienda;
import com.malou.server.base.Conexion;
import com.malou.server.base.util.GxtGridPaginate;

public class Tiendas {	
	private static SqlMapClient sqlMap = null;
	public static Integer errorTipo = 0;
		
	@SuppressWarnings("unchecked")
	public static List<Tienda> getTiendas(){		
        SqlMapClient sqlMap = null;
		
		sqlMap = Conexion.getSqlMap();
		
        List<Tienda> data = null;
		try {
			data = sqlMap.queryForList("getTiendas", null);				
		} catch (SQLException e) {
			e.printStackTrace();
		}
        return data;
	}
	@SuppressWarnings("unchecked")
	public static PagingLoadResult<Tienda> getPaginate(GxtGridPaginate paginate){		    
		
		sqlMap = Conexion.getSqlMap();
		paginate.setLimit();
		if(paginate.order.equals("")){
			paginate.order = " order by id desc";
		}
		List<Tienda> data = null;
		try {
			data = sqlMap.queryForList("paginateTienda", paginate);				
		} catch (SQLException e) {
			e.printStackTrace();
		}
		return new BasePagingLoadResult<Tienda>(data, paginate.offset, count(paginate));
	}
	
	public static Integer count(GxtGridPaginate paginate){
		Integer count = null;
		try {
			count = (Integer) sqlMap.queryForObject("countTienda", paginate);
		} catch (SQLException e) {
			e.printStackTrace();
		}
		return count;
	}
	
	public static boolean save(Tienda tda){
		boolean retorno = true;		     
		
		sqlMap = Conexion.getSqlMap();
		try {
			if(isValid(tda)){
				if(tda.getId() != null)
					sqlMap.update("updateTienda", tda);
				else
					sqlMap.insert("insertTienda", tda);
			}else
				retorno = false;
		} catch (SQLException e) {
			retorno = false;
			e.printStackTrace();			
		}
		return retorno;
	}
	
	public static boolean delete(Integer id){
		boolean retorno = true;		  
		
		sqlMap = Conexion.getSqlMap();
		try {
			if(id != null)
				sqlMap.delete("deleteTienda", id);
			else
				retorno = false;
		} catch (SQLException e) {
			retorno = false;
			e.printStackTrace();			
		}
		return retorno;
	}
	
	public static boolean deleteAll(String ids){
		boolean retorno = true;		    
		
		sqlMap = Conexion.getSqlMap();
		try {
			if(!ids.equals(""))
				sqlMap.delete("deleteTiendas", ids);
			else
				retorno = false;
		} catch (SQLException e) {
			retorno = false;
			e.printStackTrace();			
		}
		return retorno;
	}
	
	private static boolean isValid(Tienda tn){
		boolean retorno = true;
        Integer cant;
        try {
	        if(tn.getNombre() != null){
	         cant = (Integer)sqlMap.queryForObject("validaDescripcionTienda", tn);
	             if(cant != 0){
	            	errorTipo = 1; //Ya existe este Proveedor;
	                retorno = false;
	            }
	        }	       
	        	
        } catch (SQLException e) {
			retorno = false;
			e.printStackTrace();			
		}
        return retorno;
	}
	
	@SuppressWarnings("unchecked")
	public static List<Tienda> getOtherTiendas(Integer idtienda) {		
        SqlMapClient sqlMap = null;
		
		sqlMap = Conexion.getSqlMap();
		
        List<Tienda> data = null;
		try {
			data = sqlMap.queryForList("getOtherTiendas", idtienda);				
		} catch (SQLException e) {
			e.printStackTrace();
		}
        return data;
	}
}
